/*--------------------------------*- C++ -*----------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  dev
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      surfaceFeatureExtractDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

surface1
{
    surfaces
    (
        "surface1.stl"
    );

    // Identify a feature when angle between faces < includedAngle
    includedAngle   120;

    // Do not mark region edges
    geometricTestOnly       yes;

    // Write options

    // Write features to obj format for postprocessing
    writeObj                yes;
    verboseObj              no;
}


surface2
{
    surfaces
    (
        "surface2.nas"
    );

    // Load from an existing feature edge file
    files
    (
        "surface2.nas" "constant/triSurface/featureEdges.nas";
    );

    trimFeatures
    {
        // Remove features with fewer than the specified number of edges
        minElem         0;

        // Remove features shorter than the specified cumulative length
        minLen          0.0;
    }

    subsetFeatures
    {
        // Use a plane to select feature edges
        // (normal)(basePoint)
        // Keep only edges that intersect the plane will be included
        plane               (1 0 0)(0 0 0);

        // Select feature edges using a box
        // (minPt)(maxPt)
        // Keep edges inside the box:
        insideBox           (0 0 0)(1 1 1);
        // Keep edges outside the box:
        outsideBox          (0 0 0)(1 1 1);

        // Keep nonManifold edges (edges with >2 connected faces where
        // the faces form more than two different normal planes)
        nonManifoldEdges    yes;

        // Keep open edges (edges with 1 connected face)
        openEdges           yes;
    }

    addFeatures
    {
        // Add (without merging) another extendedFeatureEdgeMesh
        name                axZ.extendedFeatureEdgeMesh;

        // Optionally flip features (invert all normals, making
        // convex<->concave etc)
        // flip                false;
    }

    // Output the curvature of the surface
    curvature               no;

    // Output the proximity of feature points and edges to each other
    featureProximity        no;

    // The maximum search distance to use when looking for other feature
    // points and edges
    maxFeatureProximity     1;

    // Out put the closeness of surface elements to other surface elements.
    closeness               no;

    // Write features to obj format for postprocessing
    writeObj                yes;
    verboseObj              no;

    // Write surface proximity and curvature fields to vtk format
    // for postprocessing
    writeVTK                no;
}


// ************************************************************************* //
